νλ‘ νΈμλ νμΌ μμ€ν κΆνμ λν μ’ ν© κ°μ΄λ. κ°λ ₯ν κΈλ‘λ² μ ν리μΌμ΄μ ꡬμΆμ μν μ€ν λ¦¬μ§ μ κ·Ό μ μ΄ λ©μ»€λμ¦, λͺ¨λ² μ¬λ‘ λ° λ³΄μ κ³ λ € μ¬νμ νꡬν©λλ€.
νλ‘ νΈμλ νμΌ μμ€ν κΆν: κΈλ‘λ² μ ν리μΌμ΄μ μ μν μ€ν λ¦¬μ§ μ κ·Ό μ μ΄ λ§μ€ν°νκΈ°
μ€λλ μνΈ μ°κ²°λ λμ§νΈ νκ²½μμ μΉ μ ν리μΌμ΄μ μ λ¨μν λ°μ΄ν° κ²μμ λμ΄ νλΆνκ³ μνΈμμ©μ μΈ κ²½νμ μ 곡ν΄μΌ νλ€λ κΈ°λλ₯Ό μ μ λ λ§μ΄ λ°κ³ μμ΅λλ€. μ΄λ μ’ μ’ μ¬μ©μ μμ± μ½ν μΈ , λ―Όκ°ν μ 보 λ° λ³΅μ‘ν λ°μ΄ν° ꡬ쑰λ₯Ό μ²λ¦¬νλ κ²μ ν¬ν¨ν©λλ€. μ΄λ¬ν κΈ°λ₯μ κ΄λ¦¬νλ λ° μμ΄ μ€μν μΈ‘λ©΄, νΉν λ‘컬 μ€ν λ¦¬μ§ λ° μ¬μ©μκ° μ 곡ν νμΌμ λ€λ£° λ, νλ‘ νΈμλ νμΌ μμ€ν κΆν λ° μ€ν λ¦¬μ§ μ κ·Ό μ μ΄λ₯Ό μ€μ¬μΌλ‘ μ΄λ£¨μ΄μ§λλ€. κΈλ‘λ² μ ν리μΌμ΄μ μ ꡬμΆνλ κ°λ°μμκ² μ΄λ¬ν λ©μ»€λμ¦μ ν¨κ³Όμ μΌλ‘ μ΄ν΄νκ³ κ΅¬ννλ κ²μ 보μ, κ°μΈ μ 보 λ³΄νΈ λ° μνν μ¬μ©μ κ²½νμ μν΄ κ°μ₯ μ€μν©λλ€.
μ§ννλ νλ‘ νΈμλ μ€ν λ¦¬μ§ νκ²½
μ ν΅μ μΌλ‘ νλ‘ νΈμλ μ ν리μΌμ΄μ μ μ격 μλ²μμ κ°μ Έμ¨ μ 보λ₯Ό νμνλ λ° ν¬κ² κ΅νλμμ΅λλ€. κ·Έλ¬λ νλ μΉ κΈ°μ μ μΆνμΌλ‘ λΈλΌμ°μ μ κΈ°λ₯μ΄ κ·Ήμ μΌλ‘ νμ₯λμμ΅λλ€. μ€λλ μ νλ‘ νΈμλλ λ€μμ μνν μ μμ΅λλ€:
- λ‘컬 μ€ν 리μ§(Local Storage), μΈμ μ€ν 리μ§(Session Storage), IndexedDBμ κ°μ λ©μ»€λμ¦μ μ¬μ©νμ¬ μλΉν μμ λ°μ΄ν°λ₯Ό λ‘컬μ μ μ₯ν©λλ€.
- νμΌ API(File API)λ₯Ό ν΅ν΄ μ¬μ©μκ° λ‘컬 νμΌμ μ λ‘λνκ³ μνΈμμ©ν μ μλλ‘ ν©λλ€.
- μ’ μ’ κ΄λ²μν λ‘컬 μ€ν 리μ§λ₯Ό νμ©νλ νλ‘κ·Έλ μλΈ μΉ μ±(PWA)μ ν΅ν΄ μ€νλΌμΈ κΈ°λ₯κ³Ό ν₯μλ μ¬μ©μ κ²½νμ μ 곡ν©λλ€.
μ΄λ¬ν μ¦κ°λ νμλ μ¦κ°λ μ± μμ΄ λ°λ¦ λλ€. κ°λ°μλ 보μ μ·¨μ½μ μ λ°©μ§νκ³ μ¬μ©μ κ°μΈ μ 보λ₯Ό 보νΈνκΈ° μν΄ μ ν리μΌμ΄μ μ΄ ν΄λΌμ΄μΈνΈ μΈ‘μμ μ¬μ©μ λ°μ΄ν°μ μ‘μΈμ€, μ μ₯ λ° μ‘°μνλ λ°©λ²μ κΌΌκΌΌνκ² κ΄λ¦¬ν΄μΌ ν©λλ€. λ°λ‘ μ΄ μ§μ μμ νλ‘ νΈμλ νμΌ μμ€ν κΆνκ³Ό μ€ν λ¦¬μ§ μ κ·Ό μ μ΄κ° νμμ μ΄ λ©λλ€.
νλ‘ νΈμλ μ€ν λ¦¬μ§ λ©μ»€λμ¦ μ΄ν΄νκΈ°
κΆνμ λν΄ μμΈν μμ보기 μ μ νλ‘ νΈμλ μ ν리μΌμ΄μ μ΄ λ‘컬 μ€ν 리μ§μ μνΈμμ©νλ μ£Όμ λ°©λ²μ νμ νλ κ²μ΄ μ€μν©λλ€:
1. μΉ μ€ν λ¦¬μ§ API (λ‘컬 μ€ν λ¦¬μ§ & μΈμ μ€ν 리μ§)
μΉ μ€ν λ¦¬μ§ APIλ κ°λ¨ν ν€-κ° μ μ€ν λ¦¬μ§ λ©μ»€λμ¦μ μ 곡ν©λλ€. λ‘컬 μ€ν 리μ§(Local Storage)λ λΈλΌμ°μ μ°½μ΄ λ«ν νμλ λ°μ΄ν°λ₯Ό μ μ§νλ λ°λ©΄, μΈμ μ€ν 리μ§(Session Storage) λ°μ΄ν°λ μΈμ μ΄ μ’ λ£λ λ μ§μμ§λλ€.
- λ°μ΄ν° νμ
: λ¬Έμμ΄λ§ μ μ₯ν©λλ€. 볡μ‘ν λ°μ΄ν° νμ
μ μ§λ ¬ν(μ:
JSON.stringify()μ¬μ©) λ° μμ§λ ¬ν(μ:JSON.parse()μ¬μ©)λμ΄μΌ ν©λλ€. - λ²μ: μΆμ²(Origin)μ λ°μΈλ©λ©λλ€. λ°μ΄ν°λ λμΌν μΆμ²(νλ‘ν μ½, λλ©μΈ, ν¬νΈ)μ μ€ν¬λ¦½νΈμμλ§ μ κ·Όν μ μμ΅λλ€.
- μ©λ: λΈλΌμ°μ μ λ°λΌ λ€λ₯΄μ§λ§ μΌλ°μ μΌλ‘ μΆμ²λΉ μ½ 5-10 MBμ λλ€.
- κΆν λͺ¨λΈ: μμμ μ λλ€. λμΌν μΆμ²μ λͺ¨λ μ€ν¬λ¦½νΈμ μ κ·Όμ΄ νμ©λ©λλ€. μ΄ κΈ°λ³Έ μ€ν 리μ§μ λν΄μλ μ¬μ©μμκ² λͺ μμ μΈ κΆν μμ² ν둬ννΈκ° μμ΅λλ€.
2. IndexedDB
IndexedDBλ νμΌ λ° λΈλ‘(blob)μ ν¬ν¨νμ¬ μλΉν μμ ꡬ쑰νλ λ°μ΄ν°λ₯Ό ν΄λΌμ΄μΈνΈ μΈ‘μ μ μ₯νκΈ° μν μ μμ€ APIμ λλ€. μΉ μ€ν 리μ§λ³΄λ€ λ κ°λ ₯ν 쿼리 κΈ°λ₯μ μ 곡νλ νΈλμμ λ°μ΄ν°λ² μ΄μ€ μμ€ν μ λλ€.
- λ°μ΄ν° νμ : μλ°μ€ν¬λ¦½νΈ κ°μ²΄, λ°μ΄λ리 λ°μ΄ν°(Blob λ±), νμΌ λ± λ€μν λ°μ΄ν° νμ μ μ μ₯ν μ μμ΅λλ€.
- λ²μ: μΉ μ€ν 리μ§μ μ μ¬νκ² μΆμ²μ λ°μΈλ©λ©λλ€.
- μ©λ: μΉ μ€ν 리μ§λ³΄λ€ ν¨μ¬ ν¬λ©°, μ’ μ’ μ¬μ© κ°λ₯ν λμ€ν¬ 곡κ°κ³Ό λμ©λ λ°μ΄ν°μ λν μ¬μ©μ ν둬ννΈμ μν΄ μ νλ©λλ€.
- κΆν λͺ¨λΈ: λμΌν μΆμ² λ΄μ κΈ°λ³Έ μ½κΈ°/μ°κΈ° μμ μ λν΄ μμμ μ λλ€. κ·Έλ¬λ μ ν리μΌμ΄μ μ΄ λΉμ μμ μΌλ‘ λ§μ μμ λ°μ΄ν°λ₯Ό μ μ₯νλ €κ³ νλ©΄ λΈλΌμ°μ κ° μ¬μ©μμκ² ν둬ννΈλ₯Ό νμν μ μμ΅λλ€.
3. νμΌ API
νμΌ APIλ₯Ό μ¬μ©νλ©΄ μΉ μ ν리μΌμ΄μ
μ΄ μ¬μ©μμ λ‘컬 νμΌ μμ€ν
μ½ν
μΈ μ νλ‘κ·Έλλ° λ°©μμΌλ‘ μ κ·Όν μ μμΌλ©°, νΉν μ¬μ©μκ° λͺ
μμ μΌλ‘ νμΌμ μ ννκ±°λ(μ: μμλ₯Ό ν΅ν΄) νμ΄μ§λ‘ λλκ·Έ μ€ λλ‘ν λ κ°λ₯ν©λλ€.
- μ¬μ©μ λμ: μ΄κ²μ μ€μν μ§μ μ λλ€. λΈλΌμ°μ λ μ λ νμΌ μμ€ν μ λν μ§μ μ μ΄κ³ μμμ μΈ μ κ·Όμ νμ©νμ§ μμ΅λλ€. μ¬μ©μλ μ ν리μΌμ΄μ κ³Ό 곡μ νλ €λ νμΌμ μ κ·Ήμ μΌλ‘ μ νν΄μΌ ν©λλ€.
- 보μ: νμΌμ΄ μ νλλ©΄ μ ν리μΌμ΄μ
μ μ νλ νμΌμ λνλ΄λ
FileλλFileListκ°μ²΄λ₯Ό λ°μ΅λλ€. 보μμμ μ΄μ λ‘ μ¬μ©μμ μμ€ν μ μλ μ€μ νμΌ κ²½λ‘μ λν μ κ·Όμ μ νλ©λλ€. μ ν리μΌμ΄μ μ νμΌμ λ΄μ©μ μ½μ μλ μμ§λ§ μ¬μ©μμ μ ν λ²μλ₯Ό λ²μ΄λ νμΌμ μμλ‘ μμ νκ±°λ μμ ν μλ μμ΅λλ€.
4. μλΉμ€ μ컀μ μΊμ±
PWAμ ν΅μ¬ κ΅¬μ± μμμΈ μλΉμ€ μ컀λ λ€νΈμν¬ μμ²μ κ°λ‘μ±κ³ μΊμλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€. μ§μ μ μΈ νμΌ μμ€ν μ κ·Όμ μλμ§λ§, μ€νλΌμΈ κΈ°λ₯μ νμ±ννκΈ° μν΄ μμ°κ³Ό λ°μ΄ν°λ₯Ό λ‘컬μ μ μ₯ν©λλ€.
- λ²μ: μλΉμ€ μ컀 λ±λ‘ λ²μμ λ¬Άμ¬ μμ΅λλ€.
- κΆν λͺ¨λΈ: μμμ μ λλ€. μλΉμ€ μμ»€κ° μ€μΉλκ³ νμ±νλλ©΄ κ° μΊμλ μμ°μ λν΄ λͺ μμ μΈ μ¬μ©μ ν둬ννΈ μμ΄ μΊμλ₯Ό κ΄λ¦¬ν μ μμ΅λλ€.
νλ‘ νΈμλ νμΌ μμ€ν κΆν: λΈλΌμ°μ μ μν
λΈλΌμ°μ μμ²΄κ° νλ‘ νΈμλμμ νμΌ μμ€ν μ κ·Όμ λν μ£Όμ κ²μ΄νΈν€νΌ μν μ νλ€λ μ μ λͺ νν νλ κ²μ΄ μ€μν©λλ€. νΉμ μ¬μ©μ λλ μμ€ν μμ€ κΆνμ λΆμ¬λ°μ μ μλ μλ² μΈ‘ μ ν리μΌμ΄μ κ³Ό λ¬λ¦¬, νλ‘ νΈμλ μλ°μ€ν¬λ¦½νΈλ μλλ°μ€ νκ²½ λ΄μμ μλν©λλ€.
λΈλΌμ°μ μμ μ€νλλ μλ°μ€ν¬λ¦½νΈλ 보μμμ μ΄μ λ‘ μ¬μ©μμ λ‘컬 νμΌ μμ€ν μ μλ μμμ νμΌμ μ§μ μ κ·Όνκ±°λ μ‘°μν μ μλ€λ κ²μ΄ κΈ°λ³Έ μμΉμ λλ€. μ΄λ λ°μ΄ν°λ₯Ό νμΉκ±°λ, λ©μ¨μ΄λ₯Ό μ€μΉνκ±°λ, μμ€ν μ λ°©ν΄ν μ μλ μ μμ μΈ μΉμ¬μ΄νΈλ‘λΆν° μ¬μ©μλ₯Ό 보νΈνκΈ° μν μ€μν 보μ κ²½κ³μ λλ€.
λμ , μ κ·Όμ νΉμ λΈλΌμ°μ APIλ₯Ό ν΅ν΄ μ€μ¬λλ©° λͺ μμ μΈ μ¬μ©μ μνΈ μμ©μ΄ νμν©λλ€:
- νμΌμ λν μ¬μ©μ μ λ ₯: νμΌ APIμμ μΈκΈνλ―μ΄, μ¬μ©μλ μ λ ₯ μμλ λλκ·Έ μ€ λλ‘μ ν΅ν΄ νμΌμ μ κ·Ήμ μΌλ‘ μ νν΄μΌ ν©λλ€.
- μ€ν 리μ§μ λν λΈλΌμ°μ ν둬ννΈ: λμΌν μΆμ² λ΄μ κΈ°λ³Έ μΉ μ€ν λ¦¬μ§ λ° IndexedDB μ κ·Όμ μΌλ°μ μΌλ‘ μμμ μ΄μ§λ§, λΈλΌμ°μ λ μλΉν μ€ν λ¦¬μ§ ν λΉλμ μμ²νκ±°λ νΉμ μ₯μΉ κΈ°λ₯μ μ κ·Όνλ λ± λ λ―Όκ°ν μμ μ λν΄ ν둬ννΈλ₯Ό νμν μ μμ΅λλ€.
- κ΅μ°¨ μΆμ² μ ν: λμΌ μΆμ² μ μ± (Same-Origin Policy, SOP)μ ν μΆμ²μμ λ‘λλ μ€ν¬λ¦½νΈκ° λ€λ₯Έ μΆμ²μ 리μμ€μ μνΈμμ©νλ κ²μ λ°©μ§νλ κΈ°λ³Έμ μΈ λ³΄μ λ©μ»€λμ¦μ λλ€. μ΄λ DOM μ‘°μ, λ€νΈμν¬ μμ² λ° μ€ν λ¦¬μ§ μ κ·Όμ μ μ©λ©λλ€. μ΄κ²μ λ°μ΄ν°μ μ κ·Όν μ μλ μμΉλ₯Ό μ μ΄νλ ν΅μ¬μ μΈ μΈ‘λ©΄μΌλ‘, κ°μ μ μΌλ‘ μ€ν λ¦¬μ§ κΆνμ μν₯μ λ―ΈμΉ©λλ€.
κΈ°λ³Έ κΆνμ λμ΄μλ μ€ν λ¦¬μ§ μ κ·Ό μ μ΄
μ§μ μ μΈ νμΌ μμ€ν κΆνμ μ νμ μ΄μ§λ§, νλ‘ νΈμλμμ ν¨κ³Όμ μΈ μ€ν λ¦¬μ§ μ κ·Ό μ μ΄λ μ¬λ¬ μ λ΅μ ν¬ν¨ν©λλ€:
1. μ¬μ©μκ° μ 곡ν λ°μ΄ν° μμ νκ² μ²λ¦¬νκΈ° (νμΌ API)
μ¬μ©μκ° νμΌμ μ
λ‘λνλ©΄ μ ν리μΌμ΄μ
μ File κ°μ²΄λ₯Ό λ°μ΅λλ€. κ°λ°μλ μ΄ λ°μ΄ν°λ₯Ό μ μ€νκ² λ€λ£¨μ΄μΌ ν©λλ€:
- μλνμ΄μ μ΄μ (Sanitization): μ¬μ©μ μ λ‘λ μ½ν μΈ (μ: μ΄λ―Έμ§, λ¬Έμ)λ₯Ό μ²λ¦¬νλ κ²½μ°, μΈμ μ 곡격μ΄λ μ μ± μ½λ μ€νμ λ°©μ§νκΈ° μν΄ νμ μλ² μΈ‘μμ μλνμ΄μ¦ν΄μΌ ν©λλ€.
- μ ν¨μ± κ²μ¬: νμΌ μ ν, ν¬κΈ° λ° μ½ν μΈ λ₯Ό κ²μ¦νμ¬ μ ν리μΌμ΄μ μꡬ μ¬ν λ° λ³΄μ νμ€μ μΆ©μ‘±νλμ§ νμΈν©λλ€.
- μμ ν μ μ₯: μ λ‘λλ νμΌμ μ μ₯νλ κ²½μ°, μ λμ μΌλ‘ νμνκ³ μ격ν ν΅μ κ° μλ κ²½μ°κ° μλλΌλ©΄ ν΄λΌμ΄μΈνΈ μΈ‘ μ€ν 리μ§μμ μ§μ λ ΈμΆνμ§ λ§κ³ μλ²μ μμ νκ² μ μ₯ν©λλ€.
2. λ‘컬 μ€ν λ¦¬μ§ & IndexedDBμμ λ―Όκ°ν λ°μ΄ν° κ΄λ¦¬νκΈ°
μΉ μ€ν 리μ§μ IndexedDBλ₯Ό ν΅ν΄ μ μ₯λ λ°μ΄ν°λ μΆμ²μ μν΄ μ νλμ§λ§, μ¬μ ν ν΄λΌμ΄μΈνΈ μΈ‘μ μ μ₯λλ©° λμΌν μΆμ²μ λͺ¨λ μ€ν¬λ¦½νΈμμ μ κ·Όν μ μμ΅λλ€. λ€μ μ¬νμ κ³ λ €νμμμ€:
- λ§€μ° λ―Όκ°ν λ°μ΄ν° μ μ₯ νΌνκΈ°: λΉλ°λ²νΈ, κ°μΈ ν€ λλ λ§€μ° κΈ°λ°μΈ κ°μΈ μλ³ μ 보(PII)λ₯Ό λ‘컬 μ€ν 리μ§λ μΈμ μ€ν 리μ§μ μ§μ μ μ₯νμ§ λ§μμμ€.
- μνΈν: ν΄λΌμ΄μΈνΈ μΈ‘μ μ μ₯ν΄μΌ νλ λ―Όκ°ν λ°μ΄ν°(μ: μ΄λ μ λμ κ°μΈνκ° νμν μ¬μ©μ νκ²½ μ€μ )μ κ²½μ°, μ μ₯νκΈ° μ μ μνΈννλ κ²μ κ³ λ €νμμμ€. κ·Έλ¬λ μνΈν ν€ μ체λ μμ νκ² κ΄λ¦¬ν΄μΌ νλλ°, μ΄λ νλ‘ νΈμλμμ μ΄λ €μ΄ κ³Όμ μ λλ€. μ’ μ’ μλ² μΈ‘ μνΈνκ° λ κ°λ ₯ν ν΄κ²°μ± μ λλ€.
- μΈμ κΈ°λ° μ€ν 리μ§: μ¬μ©μ μΈμ λμλ§ νμν λ°μ΄ν°μ κ²½μ°, λΈλΌμ°μ ν/μ°½μ λ«μ λ μ§μμ§λ―λ‘ μΈμ μ€ν 리μ§(Session Storage)κ° λ‘컬 μ€ν 리μ§λ³΄λ€ λ λ°λμ§ν©λλ€.
- ꡬ쑰νλ λ°μ΄ν°λ₯Ό μν IndexedDB: λ ν¬κ³ ꡬ쑰νλ λ°μ΄ν° μΈνΈμ κ²½μ° IndexedDBκ° λ μ ν©ν©λλ€. μ κ·Ό μ μ΄λ μ¬μ ν μΆμ²μ λ°μΈλ©λ©λλ€.
3. νλ‘κ·Έλ μλΈ μΉ μ±(PWA) μ€ν λ¦¬μ§ κ³ λ € μ¬ν
PWAλ μ€νλΌμΈ κΈ°λ₯μ μν΄ ν΄λΌμ΄μΈνΈ μΈ‘ μ€ν 리μ§μ ν¬κ² μμ‘΄νλ κ²½μ°κ° λ§μ΅λλ€. μ¬κΈ°μλ μλΉμ€ μ컀λ₯Ό ν΅ν μμ° μΊμ±κ³Ό IndexedDBμ μ ν리μΌμ΄μ λ°μ΄ν° μ μ₯μ΄ ν¬ν¨λ©λλ€.
- λ°μ΄ν° 격리: μλΉμ€ μ컀μ μν΄ μΊμλ λ°μ΄ν°λ μΌλ°μ μΌλ‘ ν΄λΉ PWAμ μΆμ²λ‘ 격리λ©λλ€.
- μΊμμ λν μ¬μ©μ μ μ΄: μ¬μ©μλ μΌλ°μ μΌλ‘ λΈλΌμ°μ μΊμλ₯Ό μ§μΈ μ μμΌλ©°, μ΄ κ²½μ° PWA μμ°μ΄ μ κ±°λ©λλ€. PWAλ μ΄λ₯Ό μ μμ μΌλ‘ μ²λ¦¬νλλ‘ μ€κ³λμ΄μΌ ν©λλ€.
- κ°μΈμ 보 μ²λ¦¬λ°©μΉ¨: μ ν리μΌμ΄μ μ κ°μΈμ 보 μ²λ¦¬λ°©μΉ¨μμ μ΄λ€ λ°μ΄ν°κ° λ‘컬μ μ μ₯λκ³ κ·Έ μ΄μ κ° λ¬΄μμΈμ§ μ¬μ©μμκ² λͺ ννκ² μ리μμμ€.
4. μ κ·Ό μ μ΄λ₯Ό μν μ΅μ λΈλΌμ°μ API νμ©
μΉ νλ«νΌμ λ μΈλΆνλ μ μ΄μ λ λμ μ¬μ©μ λμ λ©μ»€λμ¦μ μ 곡νλ APIλ‘ μ§ννκ³ μμ΅λλ€:
- νμΌ μμ€ν μ κ·Ό API(File System Access API, Origin Trial): μ΄κ²μ μΉ μ ν리μΌμ΄μ μ΄ μ¬μ©μμ λ‘컬 νμΌ μμ€ν μ μλ νμΌ λ° λλ ν 리λ₯Ό μ½κ³ , μ°κ³ , κ΄λ¦¬ν μ μλ κΆνμ μμ²ν μ μλλ‘ νλ κ°λ ₯ν μ ν₯ APIμ λλ€. μ΄μ μ νμΌ APIμ λ¬λ¦¬, λͺ μμ μΈ μ¬μ©μ λμλ₯Ό ν΅ν΄ λ μꡬμ μΈ μ κ·Όμ νμ©ν μ μμ΅λλ€.
- μ¬μ©μ λμκ° ν΅μ¬: μ΄ APIλ λΈλΌμ°μ λ€μ΄ν°λΈ λν μμλ₯Ό ν΅ν΄ λͺ μμ μΈ μ¬μ©μ κΆνμ μꡬν©λλ€. μ¬μ©μλ νΉμ νμΌμ΄λ λλ ν 리μ λν μ κ·Όμ νμ©ν μ μμ΅λλ€.
- 보μ: μ κ·Όμ μ 체 νμΌ μμ€ν μ΄ μλ νμΌ λλ λλ ν 리 λ¨μλ‘ λΆμ¬λ©λλ€. μ¬μ©μλ μΈμ λ μ§ μ΄λ¬ν κΆνμ μ·¨μν μ μμ΅λλ€.
- μ¬μ© μ¬λ‘: μ½λ νΈμ§κΈ°, μ΄λ―Έμ§ μ‘°μ λꡬ, μμ°μ± μ νκ΅°κ³Ό κ°μ΄ λ κΉμ νμΌ μμ€ν ν΅ν©μ΄ νμν κ³ κΈ μΉ μ ν리μΌμ΄μ μ μ΄μμ μ λλ€.
- κΈλ‘λ² μ±ν: μ΄ APIκ° μ±μνκ³ λ λμ λΈλΌμ°μ μ§μμ λ°κ² λλ©΄, μ¬μ©μ μ μ΄λ₯Ό μ μ§νλ©΄μ λ μ κ΅ν λ‘컬 λ°μ΄ν° κ΄λ¦¬λ₯Ό κ°λ₯νκ² νμ¬ κΈλ‘λ² μ¬μ©μλ₯Ό λμμΌλ‘ νλ μ ν리μΌμ΄μ μ νλ‘ νΈμλ κΈ°λ₯μ ν¬κ² ν₯μμν¬ κ²μ λλ€.
- κΆν API(Permissions API): μ΄ APIλ₯Ό μ¬μ©νλ©΄ μΉ μ ν리μΌμ΄μ μ΄ λ€μν λΈλΌμ°μ κΆν(μ: μμΉ, μΉ΄λ©λΌ, λ§μ΄ν¬)μ μνλ₯Ό 쿼리νκ³ μ¬μ©μμκ² μμ²ν μ μμ΅λλ€. νμΌ μμ€ν μ κ·Όμ μ§μ μ μΈ κ²μ μλμ§λ§, μ΄λ λ λͺ μμ μ΄κ³ μ¬μ©μ μ€μ¬μ μΈ κΆν λͺ¨λΈλ‘ λμκ°λ λΈλΌμ°μ μ μμ§μμ λ°μν©λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ μν λͺ¨λ² μ¬λ‘
λ€μνκ³ κΈλ‘λ²ν μ¬μ©μκ° μ¬μ©ν μ ν리μΌμ΄μ μ κ°λ°ν λλ νλ‘ νΈμλ μ€ν λ¦¬μ§ λ° μ κ·Ό μ μ΄μ λν΄ λ€μκ³Ό κ°μ λͺ¨λ² μ¬λ‘λ₯Ό μ€μνμμμ€:
1. μ¬μ©μ κ°μΈμ 보 λ³΄νΈ λ° λμ μ°μ μνκΈ°
μ΄κ²μ νμμ μ¬μ§κ° μμΌλ©°, νΉν μ§ννλ κΈλ‘λ² λ°μ΄ν° κ°μΈμ 보 λ³΄νΈ κ·μ (μ: GDPR, CCPA)μ κ³ λ €ν λ λμ± κ·Έλ μ΅λλ€.
- ν¬λͺ μ±: μ΄λ€ λ°μ΄ν°κ° λ‘컬μ μ μ₯λκ³ , μ μ μ₯λλ©°, μ΄λ»κ² 보νΈλλμ§ μ¬μ©μμκ² λͺ ννκ² μ λ¬νμμμ€.
- λͺ μμ λμ: κ°λ₯ν ν, μλΉν μμ λ°μ΄ν°λ₯Ό μ μ₯νκ±°λ νμΌμ μ κ·ΌνκΈ° μ μ μ¬μ©μλ‘λΆν° λͺ μμ μΈ λμλ₯Ό μ»μΌμμμ€. λͺ ννκ³ μ΄ν΄νκΈ° μ¬μ΄ μΈμ΄λ₯Ό μ¬μ©νμμμ€.
- μ¬μ΄ κ±°λΆ(Opt-Out): μ¬μ©μκ° κΆνμ κ΄λ¦¬ λλ μ² ννκ³ λ‘컬 λ°μ΄ν°λ₯Ό μμ ν μ μλ λͺ νν λ©μ»€λμ¦μ μ 곡νμμμ€.
2. μ§μλ³ λ°μ΄ν° κ·μ μ΄ν΄νκΈ°
λ°μ΄ν° μ μ₯ λ° μ²λ¦¬ κ·μ μ κ΅κ° λ° μ§μμ λ°λΌ ν¬κ² λ€λ¦ λλ€. νλ‘ νΈμλ μ€ν 리μ§λ μΌλ°μ μΌλ‘ μΆμ²μ μν΄ μ νλμ§λ§, λ°μ΄ν° μ²λ¦¬ μμΉμ 보νΈμ μ λλ€.
- λ°μ΄ν° μ΅μν: μ ν리μΌμ΄μ κΈ°λ₯μ μ λμ μΌλ‘ νμν λ°μ΄ν°λ§ μ μ₯νμμμ€.
- λ°μ΄ν° μμΉ: μΌλΆ κ·μ μ μ¬μ©μ λ°μ΄ν°κ° μ μ₯λ μ μλ μμΉλ₯Ό κ·μ ν μ μλ€λ μ μ μ μνμμμ€. μ΄λ μ£Όλ‘ μλ² μΈ‘ λ°μ΄ν°μ λν μ°λ € μ¬νμ λλ€.
- κ·μ μ€μ: μ ν리μΌμ΄μ μ λ°μ΄ν° μ²λ¦¬ κ΄νμ΄ λμ μμ₯μ κ΄λ ¨ κ·μ μ μ€μνλμ§ νμΈνμμμ€.
3. μ²μλΆν° 보μμ κ³ λ €ν μ€κ³
보μμ λμ€μ κ³ λ €ν μ¬νμ΄ μλμ΄μΌ ν©λλ€.
- ν΄λΌμ΄μΈνΈ μΈ‘ λ°μ΄ν°λ₯Ό μ λ μ λ’°νμ§ λ§μμμ€: ν΄λΌμ΄μΈνΈλ‘λΆν° λ°μ λͺ¨λ λ°μ΄ν°(λ‘컬 μ€ν 리μ§λ νμΌμμ μ½μ λ°μ΄ν° ν¬ν¨)λ μ²λ¦¬νκ±°λ μꡬμ μΌλ‘ μ μ₯νκΈ° μ μ νμ μλ² μΈ‘μμ μ ν¨μ±μ κ²μ¬νκ³ μλνμ΄μ¦νμμμ€.
- μμ ν ν΅μ : λͺ¨λ ν΅μ μ HTTPSλ₯Ό μ¬μ©νμ¬ μ μ‘ μ€μΈ λ°μ΄ν°λ₯Ό μνΈννμμμ€.
- μ κΈ°μ μΈ κ°μ¬: νλ‘ νΈμλ μ½λ λ° μ€ν λ¦¬μ§ λ©μ»€λμ¦μ λν μ κΈ°μ μΈ λ³΄μ κ°μ¬λ₯Ό μννμμμ€.
4. μ μ§μ κΈ°λ₯ μ ν λ° λ체 κΈ°λ₯ ꡬν
λͺ¨λ μ¬μ©μκ° μ΅μ λΈλΌμ°μ λ₯Ό μ¬μ©νκ±°λ κΆνμ νμ±ννμ§λ μμ κ²μ λλ€.
- μ μ§μ ν₯μ: κ³ κΈ κΈ°λ₯ μμ΄λ μλνλ ν΅μ¬ κΈ°λ₯μ ꡬμΆν λ€μ, μ¬μ© κ°λ₯νκ³ νμ©λ λ λ‘컬 μ€ν 리μ§λ νμΌ μ κ·Όμ νμ©νλ ν₯μλ κΈ°λ₯μ κ³μΈ΅ννμμμ€.
- μ€λ₯ μ²λ¦¬: μ€ν λ¦¬μ§ μμ μ μν κ°λ ₯ν μ€λ₯ μ²λ¦¬λ₯Ό ꡬννμμμ€. μ¬μ©μκ° κΆνμ κ±°λΆνκ±°λ μ€ν λ¦¬μ§ νλμ λλ¬νλλΌλ μ ν리μΌμ΄μ μ κΈ°λ₯μ΄ μΆμλλλΌλ κ³μ μλν΄μΌ ν©λλ€.
5. μ΅μ APIλ₯Ό νλͺ νκ² νμ©νκΈ°
νμΌ μμ€ν μ κ·Ό APIμ κ°μ APIκ° λ λ리 보κΈλ¨μ λ°λΌ λ‘컬 λ°μ΄ν°λ₯Ό κ΄λ¦¬νλ κ°λ ₯ν μλ‘μ΄ λ°©λ²μ μ 곡ν©λλ€. κ·Έλ¬λ κ·Έ μ±νλ₯ μ μ μΈκ³μ μΌλ‘ λ€λ₯Ό μ μμ΅λλ€.
- κΈ°λ₯ κ°μ§: APIλ₯Ό μ¬μ©νκΈ° μ μ κΈ°λ₯ κ°μ§λ₯Ό μ¬μ©νμ¬ μ¬μ© κ°λ₯νμ§ νμΈνμμμ€.
- λΈλΌμ°μ μ§μ κ³ λ €: μ ν리μΌμ΄μ μ΄ λμμΌλ‘ ν λ€μν νλ«νΌ λ° μ§μμ κ±ΈμΉ λΈλΌμ°μ μ§μμ μ‘°μ¬νμμμ€.
- μ¬μ©μ κ²½ν: κΆν μμ²μ΄ κ°λ₯ν ν λ°©ν΄λμ§ μκ³ μ μ΅νλλ‘ μ€κ³νμμμ€.
νΌν΄μΌ ν μΌλ°μ μΈ ν¨μ
μλ ¨λ κ°λ°μμ‘°μ°¨λ μΌλ°μ μΈ ν¨μ μ λΉ μ§ μ μμ΅λλ€:
- μ 체 νμΌ μμ€ν μ κ·Ό κΆνμ΄ μλ€κ³ κ°μ νκΈ°: κ°μ₯ νν μ€μλ νλ‘ νΈμλ μλ°μ€ν¬λ¦½νΈκ° μ¬μ©μμ νμΌ μμ€ν μ κ΄λ²μνκ² μ κ·Όν μ μλ€κ³ λ―Ώλ κ²μ λλ€. κ·Έλ μ§ μμ΅λλ€.
- λ―Όκ°ν λ°μ΄ν°λ₯Ό μνΈννμ§ μκ³ μ μ₯νκΈ°: λ‘컬 μ€ν 리μ§μ λΉλ°λ²νΈλ κΈμ΅ μ 보λ₯Ό μ μ₯νλ κ²μ μ£Όμ 보μ μνμ λλ€.
- κ΅μ°¨ μΆμ² μ ν 무μνκΈ°: SOPλ₯Ό μ΄ν΄νμ§ λͺ»νλ©΄ μλͺ»λ ꡬμ±κ³Ό 보μ μ·¨μ½μ μΌλ‘ μ΄μ΄μ§ μ μμ΅λλ€.
- ν¬λͺ μ± λΆμ‘±: μ¬μ©μμκ² λ°μ΄ν° μ μ₯ κ΄νμ λν΄ μλ¦¬μ§ μμΌλ©΄ μ λ’°κ° λ¬΄λμ§λλ€.
- ν΄λΌμ΄μΈνΈ μΈ‘ μ ν¨μ± κ²μ¬μ λν κ³Όλν μμ‘΄: ν΄λΌμ΄μΈνΈ μΈ‘ μ ν¨μ± κ²μ¬λ UXλ₯Ό μν κ²μ΄κ³ , μλ² μΈ‘ μ ν¨μ± κ²μ¬λ 보μμ μν κ²μ λλ€.
κ²°λ‘
νλ‘ νΈμλ νμΌ μμ€ν κΆν λ° μ€ν λ¦¬μ§ μ κ·Ό μ μ΄λ μ¬μ©μμ νλ λλΌμ΄λΈμ λν μ§μ μ μ΄κ³ 무μ νμ μΈ μ κ·Όμ νμ©νλ κ²μ κ΄ν κ²μ΄ μλλλ€. λμ , μ΄λ μΉ μ ν리μΌμ΄μ μ΄ λ‘컬μ μ μ₯λ λ°μ΄ν° λ° μ¬μ©μκ° μ 곡ν νμΌκ³Ό μνΈ μμ©ν μ μλ κ²½κ³λ₯Ό μ μνλ κ²μ λλ€. λΈλΌμ°μ λ μ격ν 보νΈμ μν μ νλ©°, λͺ¨λ μ κ·Όμ΄ λͺ μμ μΈ μ¬μ©μ λμλ₯Ό μꡬνκ³ μμ ν μλλ°μ€ νκ²½ λ΄μμ μλνλλ‘ λ³΄μ₯ν©λλ€.
κΈλ‘λ² μ ν리μΌμ΄μ μ ꡬμΆνλ κ°λ°μμκ²λ μΉ μ€ν 리μ§, IndexedDB, νμΌ API λ° νμΌ μμ€ν μ κ·Ό APIμ κ°μ μλ‘μ΄ κΈ°λ₯μ λν κΉμ μ΄ν΄κ° μ€μν©λλ€. μ¬μ©μ κ°μΈμ 보 보νΈλ₯Ό μ°μ μνκ³ , μμ ν λ°μ΄ν° μ²λ¦¬λ₯Ό μν λͺ¨λ² μ¬λ‘λ₯Ό μ€μνλ©°, μ§ννλ κ·μ λ° λΈλΌμ°μ κΈ°μ μ λν μ 보λ₯Ό κ³μ νμ ν¨μΌλ‘μ¨, μ¬μ©μμ μμΉλ λ°°κ²½μ κ΄κ³μμ΄ μ¬μ©μμ μμ¨μ±κ³Ό λ°μ΄ν° 보νΈλ₯Ό μ‘΄μ€νλ κ°λ ₯νκ³ μμ νλ©° μ¬μ©μ μΉνμ μΈ μΉ κ²½νμ ꡬμΆν μ μμ΅λλ€.
μ΄λ¬ν μμΉμ λ§μ€ν°νλ©΄ μ ν리μΌμ΄μ μ κΈ°λ₯μ ν₯μμν¬ λΏλ§ μλλΌ κΈλ‘λ² μ¬μ©μ κΈ°λ°κ³Όμ νμμ μΈ μ λ’°λ₯Ό ꡬμΆν μ μμ΅λλ€. μ κ΅ν νλ‘ νΈμλ μνΈ μμ©μ λ―Έλλ μ€ν λ¦¬μ§ μ κ·Ό μ μ΄μ λν μμ νκ³ ν¬λͺ ν μ κ·Ό λ°©μμ λ¬λ € μμ΅λλ€.